<?php

class mensagemComponent extends Component{
    
    protected $showlabel = false;
    public function __construct() {
        parent::__construct();
        $this->LoadModel('usuario/login', 'uobj');
        $this->LoadModel('ocorrencia/mensagem', 'msg');
        $cod = $this->uobj->getCodUsuario();
        $this->user = $this->uobj->getItem($cod);
    }
    
    public function listar($model, $itens, $title = "", $class = ''){
        $this->LoadModel($model, 'obj');
        $dados = $this->obj->getDados();
        $pkey = $this->obj->getPkey();
        $id = str_replace("/", "_", $model);
        $class = ($class != "")? " class='$class'":"";
        $display = (is_array($itens) && !empty ($itens));
        if(!$this->showOnlyListItem){
            echo "<div$class> ";
                echo "<div class='title'>$title</div>";
                echo "<ul id='$id' class='list'>";
        }
        if($display){
                foreach($itens as $item){
                    $lida = $this->is_lida($item)?' mensagem_expandida ':'';
                    echo "<li class='list-item list_$id$lida'>";
                        $this->DrawItem($model, $pkey, $item, $dados);
                    echo "</li>";
                    
                }
        }
        if(!$this->showOnlyListItem){
                echo "</ul>";
            echo "</div>";     
        }
    }
    
    private $firstUnRead = "0";
    public function setFirstUnRead($lastmsg){
        $this->firstUnRead = $lastmsg;
    }
    
    private function is_lida($item){
        return ($this->firstUnRead <= $item['cod_mensagem'] && $this->firstUnRead > 0);
    }
    
    public function DrawItem($model, $pkey, $item, $dados){
        $lida = $this->is_lida($item)?'n':'s';
        if(array_key_exists('lida', $item)){
            $lida = $item['lida'];
            unset($item['lida']);
        }

        if($item['cod_autor'] == "") $item['cod_autor'] = "Usuário removido do Sistema";
        $bool = ($item['__cod_autor'] == $this->user['cod_usuario']);
        if(array_key_exists('sistema', $item) && $item['sistema'] == "s"){
            $item['cod_autor'] = "<b>".MENSAGEM_DO_SISTEMA."</b>";
            unset($item['sistema']);
        }elseif($bool){
            $lida = 's';
            $item['cod_autor'] = "<b>".USUARIO_AUTOR_DA_MENSAGEM."</b>";
        }
        
        $has_anexo = "";
        $__has_anexo = "n";
        if(array_key_exists('has_anexo', $item)){
            $has_anexo = $item['has_anexo'];
            if($has_anexo == "s"){
                $__has_anexo = "s";
                $has_anexo = $this->Html->LoadImage('anexo.png', "has_anexo", false);
            }else $has_anexo = "";
            unset($item['has_anexo']);
        }
        
        $id = $item[$pkey];
        $class = ($bool)? " is_autor":"";
        if($lida == 'n') $class .= " unread";
        echo "<div class='container$class' id='$id'>";

        $link3 = $this->Html->getLink("$model/show/$id");
        echo "<a class='responder' href='$link3' target='_blank'>Comentar</a> $has_anexo";

        $hide_veja_mais = false;
        $display_res = ($lida == "s")?'': ' hide';
        $display_exp = ($lida == "s")?' hide': '';
        $dclass = ($lida == "s")?"":" style='display:none' ";
        
        $link = $this->Html->getLink("$model/show/$id");
        foreach($item as $name => $it){
            if(@$name[0] == "_" && @$name[1] == "_") continue;
            if($pkey == $name) continue;
            if($this->checkIsPrivate($dados, $name)) continue;
                    
            $len = strlen(strip_tags($it));
            $temp = $it;
            $it = $this->formatType($name, $dados, $it);
            
            //exibe apenas resumo da mensagem se ela está lida
            $dres = $dc = "";
            if($name == 'texto') {
                //esconde as mensagens lidas do modo expandido
                if($len > (MAX_STR_IN_LIST))$it = $it." (...) ";
                elseif($__has_anexo == "n")   $hide_veja_mais = true;
                echo "<span class='texpandido$display_exp'>$temp</span>";
                $dres = $display_res;
                $dc = $dclass;
            }elseif($name == 'resposta'){
                if($it == "") continue;
                $it = "Comentando: " . $this->Html->MakeLink("ocorrencia/mensagem/show/$it/", "Mensagem", "", false);
            }
            
            echo "<span class='$name$dres'$dc>$it</span>";
        }
        if(!$hide_veja_mais){
            $texto_link = ($lida == "n")?'Esconder': VEJA_MAIS;
            echo "<br/><a class='showlink' href='$link'>".$texto_link."</a>";
        }
        echo "</div>";
    }
    
     public function show($model, $item){
         if(@$item['resposta'] == "")unset($item['resposta']);
         else{
              $item['resposta'] = "Comentando: " .
              $this->Html->MakeLink(
                        "ocorrencia/mensagem/show/".$item['resposta'] ."/", 
                        "Mensagem", "", false
              ). "<hr/>";
         }
            
                
         parent::show($model, $item);
         $this->LoadModel('ocorrencia/anexo', 'anx');
         $anexos = $this->anx->getAnexoPorMensagem($item['cod_mensagem']);
         if(!empty ($anexos)){
             $this->LoadComponent('files/arquivo', 'anx');
             $this->anx->showAnexos('files/arquivo', $anexos, "Anexos", 'anexo');
         }elseif($item['__has_anexo'] == 's') $this->gui->info('Anexos removidos pelo administrador do sistema!');
         
         if(LINK == "ocorrencia/mensagem" && !isset($_REQUEST['ajax'])){
             $this->LoadModel(LINK, 'model');
             $this->LoadModel('ocorrencia/ocorrencias', 'oc');
             $ocorrencia = $this->oc->getItem($_SESSION['ocorrencia/ocorrencias']);
             $dados      = $this->model->getDados();
             //unset($dados['cod_ocorrencia']);
             $this->form2($ocorrencia, $dados);
         }
     }
     
     protected function DrawShowItem($name, $var, $arr){
         parent::DrawShowItem("$name"."_list", $var, $arr);
     }

     private $form_str = '';
     public function form2($ocorrencia, $msg_dados, $values = array()){
        if(isset($ocorrencia['__grupo'])){
            $this->LoadModel('ocorrencia/grupo', 'gr');
            if($this->gr->IsArquivado($ocorrencia['__grupo'])) return;
        }
        if($this->form_str == ""){
            if(!empty($ocorrencia) && $ocorrencia['__tipo'] == "andamento"){
                $append = "UpdateMessages();";
                if(CURRENT_ACTION == "show" && LINK == "ocorrencia/mensagem"){
                    $append = "window.close(); ";
                }
                $url        = 'ocorrencia/mensagem/formulario';
                $this->LoadJsPlugin('formulario/jqueryvalidate', 'jsval');
                $this->jsval->addToReset($append);
                
                $this->LoadResource('formulario', 'form');
                ob_start();
                $this->form->NewForm($msg_dados, $values, array(), true, $url);   
                $this->form_str = ob_get_contents();
                ob_end_clean();
             }
        }
        echo $this->form_str;
     }
    
     private function getComentarioText(){
         
     }
}

?>